﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IM.Easy.Core.Audit;
using SqlSugar;

namespace IM.Easy.Entity.System
{
    /// <summary>
    /// 账户安全表
    /// </summary>
    [SugarTable("SysAccountSecurity", TableDescription = "账户安全表")]
    public class SysAccountSecurity : AuditSnowflakeEntity
    {
        /// <summary>
        /// 关联账户ID
        /// </summary>
        public long UserId { get; set; }
        /// <summary>
        /// 连续失败次数（默认0）
        /// </summary>
        public int FailedAttempts { get; set; }

        /// <summary>
        /// 是否锁定（默认false）
        /// </summary>
        public bool IsLocked { get; set; }

        /// <summary>
        /// 锁定时间（可空）
        /// </summary>
        public DateTime? LockedAt { get; set; }

        // 您要求保留的字段
        /// <summary>
        /// 最后成功登录时间（可空）
        /// </summary>
        public DateTime? LastLoginAt { get; set; }

        /// <summary>
        /// 最后失败尝试时间（可空）
        /// </summary>
        public DateTime? LastFailedAt { get; set; }

        /// <summary>
        /// 最后登录IP（支持IPv6格式）
        /// </summary>
        [MaxLength(45)]
        public string? LastLoginIp { get; set; }

        /// <summary>
        /// 自动解锁时间（动态计算）
        /// </summary>
        public DateTime? AutoUnlockAt { get; set; }

    }
}
